// 不把接口放此，把公共处理的方法放此

// 将图片转换为Base64
function getPhotoBase64(fileurl, callback) {
	// 微信小程序图片
	// #ifdef MP-WEIXIN
	getBase64(fileurl).then(base64 => {
		callback(base64)
	}).catch(err => {
		// console.error('转换Base64失败:', err)
		uni.showToast({
			title: '图片处理失败',
			icon: 'none'
		})
	})
	// #endif
	// #ifdef H5
	h5GetBase64(fileurl).then(base64 => {
		console.log('H5fileuse:', fileurl)
		callback(base64)
	}).catch(err => {
		// console.error('转换Base64失败:', err)
		uni.showToast({
			title: '图片处理失败',
			icon: 'none'
		})
	})
	// #endif
	// #ifdef APP-PLUS
	appGetBase64(fileurl).then(base64 => {
		console.log('APPfileuse:', fileurl)
		callback(base64)
	}).catch(err => {
		// console.error('转换Base64失败:', err)
		uni.showToast({
			title: '图片处理失败!',
			icon: 'none'
		})
	})
	// #endif
}


// 支付微信小程序图片URL转换为Base64
function getBase64(fileUrl) {
	return new Promise((resolve, reject) => {
		// getFileSystemManager只能微信小程序中使用
		// console.log('MP-WEIXIN')
		uni.getFileSystemManager().readFile({
			filePath: fileUrl,
			encoding: 'base64',
			success: res => {
				// 添加Base64前缀（根据实际图片类型）--目前暂时不用添加前缀
				// let prefix = 'data:image/jpeg;base64,'
				// if (fileUrl.indexOf('.png') !== -1) {
				// 	prefix = 'data:image/png;base64,'
				// } else if (fileUrl.indexOf('.gif') !== -1) {
				// 	prefix = 'data:image/gif;base64,'
				// }
				// resolve(prefix + res.data)
				resolve(res.data)
			},
			fail: err => {
				reject(err)
			}
		})
	})
}

// H5转base64
function h5GetBase64(fileUrl) {
	console.log('H5fileuse-1:', fileUrl)
	return new Promise((resolve, reject) => {
		const canvas = document.createElement('canvas');
		const ctx = canvas.getContext('2d');
		const img = new Image();

		img.onload = () => {
			canvas.width = img.width;
			canvas.height = img.height;
			ctx.drawImage(img, 0, 0);
			const base64 = canvas.toDataURL('image/jpeg', 0.8); // 0.8是质量参数
			resolve(base64);
		};
		img.onerror = (err) => {
			reject(err);
		};
		img.src = tempFilePath;
	});
}

// APP其它平台
function appGetBase64(fileUrl) {
	return new Promise((resolve, reject) => {
		plus.io.resolveLocalFileSystemURL(tempFilePath, fileEntry => {
			fileEntry.file(file => {
				const fileReader = new plus.io.FileReader();
				fileReader.onloadend = function(e) {
					const base64 = e.target.result;
					resolve(base64);
				};
				fileReader.readAsDataURL(file);
			}, reject);
		}, reject);
	});
}


// 计算当前年月至给出的月份差值
function calculateDateDifference(oldDate) {
	// 目标日期（2022-07-24）
	const targetDate = new Date(oldDate);
	const currentDate = new Date();

	// 计算总月份差
	let months = (currentDate.getFullYear() - targetDate.getFullYear()) * 12;
	months += currentDate.getMonth() - targetDate.getMonth();

	// 处理天数差异（如果当前日小于目标日，则减去一个月）
	if (currentDate.getDate() < targetDate.getDate()) {
		months--;
	}

	// 计算年和月
	const years = Math.floor(months / 12);
	const remainingMonths = months % 12;
	
	return {
		years,
		months: remainingMonths
	};
}


// 定义通用的空值检查方法
function isEmpty(value) {
	return (
		value === undefined || value == "undefined" ||
		value === null ||
		(typeof value === 'string' && value.trim() === '') ||
		(Array.isArray(value) && value.length === 0) ||
		(typeof value === 'object' && value !== null && Object.keys(value).length === 0)
	);
}


// 时间格式处理
function formatDate(DateTime) {
	// 1. 将字符串转为 Date 对象
	const date = new Date(DateTime);
	
	// 2. 提取年、月、日（注意月份要 +1）
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零
	const day = String(date.getDate()).padStart(2, '0');        // 补零
	
	// 3. 拼接成目标格式
	const formattedDate = `${year}-${month}-${day}`;
	return formattedDate
}


// 时间格式处理日期时间
function formatDateTime(DateTime) {
	// 1. 将字符串转为 Date 对象
	const date = new Date(DateTime);
	
	// 2. 提取年、月、日（注意月份要 +1）
	const year = date.getFullYear();
	const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零
	const day = String(date.getDate()).padStart(2, '0');        // 补零
	const hour = String(date.getHours()).padStart(2, '0');
	const minute = String(date.getMinutes()).padStart(2, '0');
	const second = String(date.getSeconds()).padStart(2, '0');

	// 3. 拼接成目标格式
	const formattedDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
	return formattedDate
}




export default {
	getPhotoBase64,
	getBase64,
	h5GetBase64,
	appGetBase64,
	calculateDateDifference,
	isEmpty,
	formatDate,
	formatDateTime
};